001 /** 002 * Java Gui Builder - A library to build GUIs using an XML file. 003 * Copyright 2002, 2003 (C) François Beausoleil 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library; if not, write to the Free Software 017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 018 */ 019 020 package jgb.handlers.swing; 021 022 023 import jgb.builder.TagHandler; 024 import jgb.builder.utils.ConstructorCall; 025 import org.xml.sax.SAXException; 026 027 import java.util.Map; 028 029 /** 030 * @since 0.1a 031 * @author Francois Beausoleil, <a href="mailto:fbos@users.sourceforge.net">fbos@users.sourceforge.net</a> 032 */ 033 public class ObjectTagHandler extends AbstractTagHandler { 034 public void enterElement(Map atts) throws SAXException { 035 tagContext.put(TagHandler.CURRENT_OBJECT_ID_KEY, (String)atts.get(ATTR_ID)); 036 037 String className = (String)atts.get(ATTR_CLASS); 038 try { 039 createConstructorCall(className, tagContext); 040 } catch (ClassNotFoundException e) { 041 throwParsingException("declared class not found", e); 042 } 043 044 tagContext.put(TagHandler.CURRENT_OBJECT_KEY, null); 045 } 046 047 public void exitElement() throws SAXException { 048 Map objects = (Map)tagContext.get(TagHandler.OBJECTS_MAP_KEY); 049 objects.put(tagContext.get(TagHandler.CURRENT_OBJECT_ID_KEY), tagContext.get(TagHandler.CURRENT_OBJECT_KEY)); 050 051 popCurrentObject(); 052 } 053 054 protected void createConstructorCall(String className, Map tagContext) throws ClassNotFoundException { 055 ConstructorCall ctorCall = new ConstructorCall(className); 056 tagContext.put(TagHandler.CURRENT_PARM_ACC_KEY, ctorCall); 057 } 058 }